package sync;

import java.util.ArrayList;
import java.util.List;

/**
 * 加锁只是不让其他线程修改，但主线程只是读所以加不加锁都没影响正常逻辑，
 * 所以要使主线程sleep等待list线程结束输出size才能看出结果
 * 对list线程加锁，使一个list add时其他不能add size正常
 */
public class unsafeList {
    public static void main(String[] args) throws InterruptedException {
        List<String> list = new ArrayList<>();
        for (int i = 0; i < 100; i++) {
            new Thread(() -> {
                /*synchronized (list) {//安全
                    list.add(Thread.currentThread().getName());
                    System.out.println("次线程："+list.size());
                }*/
                list.add(Thread.currentThread().getName());//不安全
                System.out.println("次线程："+list.size());
            }).start();
        }
        Thread.sleep(1);
        System.out.println("main线程：" + list.size());

    }
}
